from Grilla import Posicion
from Marca import *

from EstadoNoMarcando import EstadoNoMarcando

class ControladorDePartidaDeSopaDeLetras:
	def __init__(self, partida, vista):
		self.__partida = partida
		self.__vista = vista
		self.__vista.setearControlador(self)
		self.__estado = EstadoNoMarcando(self)
	
	def seApretoBotonGrilla(self,(i,j)):
		posicion = Posicion(i,j)
		self.__estado.seApretoEn(posicion)
	
	def iniciarJuego(self):
		self.__partida.iniciar()

	def marcar(self, marca):
		self.__partida.marcar( marca )

	def seApretoBotonTerminar(self):
		self.__partida.terminar()

		self.deshabilitarTodosLosBotones()
		self.deshabilitarBotonTerminar()

	def bloquearBotonesInvalidos(self, i,j):
		self.deshabilitarTodosLosBotones()

		grilla = self.__partida.sopaDeLetras().grilla()
		ancho = grilla.ancho()
		alto = grilla.alto()

		for x in range(ancho):
			for y in range(alto):
				if x == i:
					posicion = Posicion(x,y)
					self.__vista.habilitarBoton(posicion)
				if y == j:
					posicion = Posicion(x,y)
					self.__vista.habilitarBoton(posicion)
				xdistancia = abs(x-i)
				ydistancia = abs(y-j)
				if xdistancia == ydistancia:
					posicion = Posicion(x,y)
					self.__vista.habilitarBoton(posicion)
	
	def deshabilitarTodosLosBotones(self):
		grilla = self.__partida.sopaDeLetras().grilla()
		ancho = grilla.ancho()
		alto = grilla.alto()
		for x in range(ancho):
			for y in range(alto):
				posicion = Posicion(x, y)
				self.__vista.deshabilitarBoton(posicion)

	def habilitarTodosLosBotones(self):
		grilla = self.__partida.sopaDeLetras().grilla()
		ancho = grilla.ancho()
		alto = grilla.alto()
		for x in range(ancho):
			for y in range(alto):
				posicion = Posicion(x, y)
				self.__vista.habilitarBoton(posicion)

	def deshabilitarBotonTerminar(self):
		self.__vista.deshabilitarBotonTerminar()

	def cambiarEstado(self, estadoNuevo):
		self.__estado = estadoNuevo

